package day15;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

//测试 Map接口的方法
public class Test4_Map {
    public static void main(String[] args) {
        //1,创建对象
        //Integer是key的类型 -- String是value类型
        Map<Integer,String> map = new HashMap<>();
        //2,调用方法
        map.put(9527,"唐伯虎") ;
        map.put(9528,"秋香姐") ;
        map.put(9530,"祝枝山") ;
        // {9527=唐伯虎, 9528=秋香姐, 9530=祝枝山}
        System.out.println(map);
//        map.clear(); //清空集合
System.out.println(map.containsKey(9530));//判断是否包含key
System.out.println(map.containsValue("唐伯虎"));//判断是否包含value
System.out.println(map.equals(123));//判断是否和123相等
System.out.println(map.get(9530));//根据key获取value
  System.out.println(map.hashCode());//获取哈希码值
  System.out.println(map.isEmpty());//判断是否为空
  System.out.println(map.size());//获取元素个数
  System.out.println(map.remove(9528));//根据key删除记录
        System.out.println(map);//{9527=唐伯虎, 9530=祝枝山}

//TODO  void putAll(Map<? extends K,? extends V> m)

        //TODO 迭代map里的数据
//方式1::: Set<K> keySet() --把map里的key存入set集合
        Set<Integer> set = map.keySet();
        //遍历set,获取每个key
        for (Integer key : set) {
            //拿着key回map里找value
            String value = map.get(key);
            System.out.println(key+"--"+value);
        }
//方式2::: Set<Map.Entry<K,V>> entrySet()
//  --把map里的key和value存到set里,并封装成Entry对象
Set<Map.Entry<Integer,String>> set2 = map.entrySet();
        //遍历set得到一个Entry
        for(Map.Entry<Integer,String> entry : set2){
            Integer key = entry.getKey();//获取key
            String value = entry.getValue();//获取value
            System.out.println(key+"~~"+value);
        }
//方式3::: Collection<V> values() --把map里的value们存入Collection
        Collection<String> values = map.values();
        //遍历集合,得到每个value
        for (String value : values){
            System.out.println(value);
        }
    }
}
